package dto;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import vo.ScheduleVO;
import db.MySql;

public class ScheduleDTO {
	
	ScheduleVO vo = null;
	Connection conn = null;
	
	final String NULL_DATA = null;
	
	public ScheduleDTO() {
		
		conn = new MySql().getConn();
	}
	
	//[개인 일정] 해당 아이디의 개인 일정 페이지 컨텐츠를 불러오는 메서드 입니다. 
	public ArrayList<ScheduleVO> getPrivateScheduleContents(String m_id) {
		
		ArrayList<ScheduleVO> list = new ArrayList<ScheduleVO>();
		String sql = "select * from schedule where m_id ='"+m_id+"' and schedule_division = 'private' and schedule_time is null";
		
		try {			
			PreparedStatement psmt = conn.prepareStatement(sql);
			ResultSet rs = psmt.executeQuery();
			
			while(rs.next()){
				
				ScheduleVO vo = new ScheduleVO();
				vo.setM_id(rs.getString("m_id"));
				String calendar = rs.getString("schedule_date");
				String[] calendarArr = calendar.split("-");
				calendar = calendarArr[0]+calendarArr[1]+calendarArr[2];
				vo.setSchedule_date(calendar);
				vo.setSchedule_title(rs.getString("schedule_title"));
				vo.setSchedule_contents_first(rs.getString("schedule_contents_first"));
				vo.setSchedule_contents_second(rs.getString("schedule_contents_second"));
				vo.setSchedule_division(rs.getString("schedule_division"));
				
				list.add(vo);
			}
			rs.close();
			psmt.close();
			conn.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return list;
	}
	
	//[개인 일정] 첫번째 컨텐츠 입력 메서드 입니다.
	public boolean privateInsertFirst(ScheduleVO vo) {
		
		boolean flag = false;
		
		if(vo.getSchedule_contents_second() == null || vo.getSchedule_contents_second().equals("null")){
			
			String sql = "insert into schedule (m_id, schedule_contents_first, schedule_date, schedule_division) values(?, ?, ?, ?)";
		
			try {
				PreparedStatement psmt = conn.prepareStatement(sql);
				psmt.setString(1, vo.getM_id());
				psmt.setString(2, vo.getSchedule_contents_first());
				psmt.setInt(3, Integer.parseInt(vo.getSchedule_date()));
				psmt.setString(4, vo.getSchedule_division());
				
				int affectedRow = psmt.executeUpdate();
				System.out.println("[DB 개인 일정] 첫번째 컨텐츠가 입력되었습니다.");
				if(affectedRow > 0) flag = true;
				else flag = false;
				
				psmt.close();
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
				System.out.println("[DB 개인 일정] 첫번째 컨텐츠 입력 중 오류가 발생했습니다.");
			}
		}else if(vo.getSchedule_contents_second() != null || !vo.getSchedule_contents_second().equals("null")){
			
			String sql = "update schedule set schedule_contents_first = ? where m_id = ? and schedule_date = ? and schedule_division = ? and schedule_time is null";
			
			try {
				PreparedStatement psmt = conn.prepareStatement(sql);
				psmt.setString(1, vo.getSchedule_contents_first());
				psmt.setString(2, vo.getM_id());
				psmt.setInt(3, Integer.parseInt(vo.getSchedule_date()));
				psmt.setString(4, vo.getSchedule_division());
				
				int affectedRow = psmt.executeUpdate();
				
				if(affectedRow > 0) flag = true;
				else flag = false;
				
				psmt.close();
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
				System.out.println("[DB 개인 일정] 첫번째 컨텐츠 입력중 오류가 발생하였습니다");
			}
		}
			
		return flag;
	}
	
	//[개인 일정] 두번째 컨텐츠 입력 메서드 입니다.
	public boolean privateInsertSecond(ScheduleVO vo) {
		
		boolean flag = false;
		
		if(vo.getSchedule_contents_first() == null || vo.getSchedule_contents_first().equals("null")){
			
			String sql = "insert into schedule (m_id, schedule_contents_second, schedule_date, schedule_division) values(?, ?, ?, ?)";
		
			try {
				PreparedStatement psmt = conn.prepareStatement(sql);
				psmt.setString(1, vo.getM_id());
				psmt.setString(2, vo.getSchedule_contents_second());
				psmt.setInt(3, Integer.parseInt(vo.getSchedule_date()));
				psmt.setString(4, vo.getSchedule_division());
				
				int affectedRow = psmt.executeUpdate();
				System.out.println("[DB 개인 일정] 두번째 컨텐츠가 입력되었습니다.");
				if(affectedRow > 0) flag = true;
				else flag = false;
				
				psmt.close();
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
				System.out.println("[DB 개인 일정] 두번째 컨텐츠 입력 중 오류가 발생했습니다.");
			}
		}else if(vo.getSchedule_contents_second() != null || !vo.getSchedule_contents_second().equals("null")){
			
			String sql = "update schedule set schedule_contents_second = ? where m_id = ? and schedule_date = ? and schedule_division = ?";
			
			try {
				PreparedStatement psmt = conn.prepareStatement(sql);
				psmt.setString(1, vo.getSchedule_contents_second());
				psmt.setString(2, vo.getM_id());
				psmt.setInt(3, Integer.parseInt(vo.getSchedule_date()));
				psmt.setString(4, vo.getSchedule_division());
				
				int affectedRow = psmt.executeUpdate();
				
				if(affectedRow > 0) flag = true;
				else flag = false;
				
				psmt.close();
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
				System.out.println("[DB 개인 일정] 첫번째 컨텐츠 입력중 오류가 발생하였습니다");
			}
		}
			
		return flag;
	}
	
	//[개인 일정] 첫번째 컨텐츠 수정 메서드 입니다.
	public boolean privateUpdateFirst(ScheduleVO vo) {
		
		boolean flag = false;
		
		String sql = "update schedule set schedule_contents_first = ? where m_id = ? and schedule_date = ? and schedule_division = ?";
		
		try {
			PreparedStatement psmt = conn.prepareStatement(sql);
			psmt.setString(1, vo.getSchedule_contents_first());
			psmt.setString(2, vo.getM_id());
			psmt.setInt(3, Integer.parseInt(vo.getSchedule_date()));
			psmt.setString(4, vo.getSchedule_division());
			
			int affectedRow = psmt.executeUpdate();
			System.out.println("[DB 개인 일정] 첫번째 컨텐츠가 수정되었습니다.");
			if(affectedRow > 0) flag = true;
			else flag = false;
			
			psmt.close();
			conn.close();
		} catch (SQLException e) {
			e.printStackTrace();
			System.out.println("[DB 개인 일정] 첫번째 컨텐츠 수정중 오류가 발생하였습니다");
		}
		
		return flag;
	}
	
	//[개인 일정] 두번째 컨텐츠 수정 메서드 입니다.
	public boolean privateUpdateSecond(ScheduleVO vo) {
		
		boolean flag = false;
		
		String sql = "update schedule set schedule_contents_second = ? where m_id = ? and schedule_date = ? and schedule_division = ?";
		
		try {
			PreparedStatement psmt = conn.prepareStatement(sql);
			psmt.setString(1, vo.getSchedule_contents_second());
			psmt.setString(2, vo.getM_id());
			psmt.setInt(3, Integer.parseInt(vo.getSchedule_date()));
			psmt.setString(4, vo.getSchedule_division());
			
			int affectedRow = psmt.executeUpdate();
			System.out.println("[DB 개인 일정] 첫번째 컨텐츠가 수정되었습니다.");
			if(affectedRow > 0) flag = true;
			else flag = false;
			
			psmt.close();
			conn.close();
		} catch (SQLException e) {
			e.printStackTrace();
			System.out.println("[DB 개인 일정] 두번째 컨텐츠 수정중 오류가 발생하였습니다");
		}
		
		return flag;
	}
	
	//[개인 일정] 첫번째 컨텐츠 삭제 메서드 입니다.
	public boolean privateDeleteFirst(ScheduleVO vo) {
		
		boolean flag = false;
		
		if(!vo.getSchedule_all_delete().equals("allDelete")){
			
			String sql = "update schedule set schedule_contents_first = "+NULL_DATA+" where m_id = ? and schedule_date = ? and schedule_division = ?";
			
			try {
				PreparedStatement psmt = conn.prepareStatement(sql);
				psmt.setString(1, vo.getM_id());
				psmt.setInt(2, Integer.parseInt(vo.getSchedule_date()));
				psmt.setString(3, vo.getSchedule_division());
				
				int affectedRow = psmt.executeUpdate();
				if(affectedRow > 0) flag = true;
				else flag = false;
				
				psmt.close();
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
				System.out.println("[DB 개인 일정] 첫번째 컨텐츠 삭제 중 오류가 발생하였습니다.");
			}
		}else if(vo.getSchedule_all_delete().equals("allDelete")){
			
			String sql = "delete from schedule where m_id = ? and schedule_date = ? and schedule_division = ?";
			
			try {
				PreparedStatement psmt = conn.prepareStatement(sql);
				psmt.setString(1, vo.getM_id());
				psmt.setInt(2, Integer.parseInt(vo.getSchedule_date()));
				psmt.setString(3, vo.getSchedule_division());
				
				int affectedRow = psmt.executeUpdate();
				System.out.println("[DB 개인 일정] 첫번째 컨텐츠 해당 모든 데이터가 삭제되었습니다.");				
				if(affectedRow > 0) flag = true;
				else flag = false;
				
				psmt.close();
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
				System.out.println("[DB 개인 일정] 첫번째 컨텐츠 해당 모든 데이터 삭제 중 오류가 발생하였습니다.");
			}
		}
		return flag;
	}
	
	//[개인 일정] 두번째 컨텐츠 삭제 메서드 입니다.
	public boolean privateDeleteSecond(ScheduleVO vo) {
		
		boolean flag = false;
		
		if(!vo.getSchedule_all_delete().equals("allDelete")){
			
			String sql = "update schedule set schedule_contents_second = "+NULL_DATA+" where m_id = ? and schedule_date = ? and schedule_division = ?";
			
			try {
				PreparedStatement psmt = conn.prepareStatement(sql);
				psmt.setString(1, vo.getM_id());
				psmt.setInt(2, Integer.parseInt(vo.getSchedule_date()));
				psmt.setString(3, vo.getSchedule_division());
				
				int affectedRow = psmt.executeUpdate();
				System.out.println("[DB 개인 일정] 두번째 컨텐츠가 삭제되었습니다.");
				if(affectedRow > 0) flag = true;
				else flag = false;
				
				psmt.close();
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
				System.out.println("[DB 개인 일정] 두번째 컨텐츠 삭제 중 오류가 발생하였습니다.");
			}
		}else if(vo.getSchedule_all_delete().equals("allDelete")){
			
			String sql = "delete from schedule where m_id = ? and schedule_date = ? and schedule_division = ?";
			
			try {
				PreparedStatement psmt = conn.prepareStatement(sql);
				psmt.setString(1, vo.getM_id());
				psmt.setInt(2, Integer.parseInt(vo.getSchedule_date()));
				psmt.setString(3, vo.getSchedule_division());
				
				int affectedRow = psmt.executeUpdate();
				System.out.println("[DB 개인 일정] 두번째 컨텐츠 해당 모든 데이터가 삭제되었습니다.");	
				if(affectedRow > 0) flag = true;
				else flag = false;
				
				psmt.close();
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
				System.out.println("[DB 개인 일정] 두번째 컨텐츠 해당 모든 데이터 삭제 중 오류가 발생하였습니다.");
			}
		}
		return flag;
	}
	
	//[팀 일정] 해당 아이디의 부서 코드 셀렉트 메서드 입니다.
	public int divisionSelect(String m_id) {
		
		int d_code = 0;
		
		String sql = 
			" select e.d_code from semyadmin.messenger m join semyadmin.employees e "+
			" on m.e_number = e.e_number where m.m_id = '"+m_id+"'";	
		try {			
			PreparedStatement psmt = conn.prepareStatement(sql);
			ResultSet rs = psmt.executeQuery();
			
			while(rs.next()){
				
				ScheduleVO vo = new ScheduleVO();
				vo.setSchedule_division(rs.getString("d_code"));
				d_code = rs.getInt("d_code");
			}
			rs.close();
			psmt.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return d_code;
	}
	
	//[팀 일정] 해당 아이디의 팀 일정 페이지 컨텐츠 불러오는 메서드 입니다.
	public ArrayList<ScheduleVO> getTeamScheduleContents(int d_code) {
		
		ArrayList<ScheduleVO> list = new ArrayList<ScheduleVO>();
		String sql = "select * from schedule where schedule_division = "+d_code;
		
		try {			
			PreparedStatement psmt = conn.prepareStatement(sql);
			ResultSet rs = psmt.executeQuery();
			
			while(rs.next()){
				
				ScheduleVO vo = new ScheduleVO();
				vo.setM_id(rs.getString("m_id"));
				String calendar = rs.getString("schedule_date");
				String[] calendarArr = calendar.split("-");
				calendar = calendarArr[0]+calendarArr[1]+calendarArr[2];
				vo.setSchedule_date(calendar);
				vo.setSchedule_title(rs.getString("schedule_title"));
				vo.setSchedule_contents_first(rs.getString("schedule_contents_first"));
				vo.setSchedule_contents_second(rs.getString("schedule_contents_second"));
				vo.setSchedule_division(rs.getString("schedule_division"));
				
				list.add(vo);
			}
			
			rs.close();
			psmt.close();
			//conn.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return list;
	}
	
	//[팀 일정] 첫번째 컨텐츠 입력 메서드 입니다.
	public boolean teamInsertFirst(ScheduleVO vo) {
		
		boolean flag = false;
		
		if(vo.getSchedule_contents_second() == null || vo.getSchedule_contents_second().equals("null")){
			
			String sql = "insert into schedule (m_id, schedule_contents_first, schedule_date, schedule_division) values(?, ?, ?, ?)";
		
			try {
				PreparedStatement psmt = conn.prepareStatement(sql);
				psmt.setString(1, vo.getM_id());
				psmt.setString(2, vo.getSchedule_contents_first());
				psmt.setInt(3, Integer.parseInt(vo.getSchedule_date()));
				psmt.setString(4, vo.getSchedule_division());
				
				int affectedRow = psmt.executeUpdate();
				System.out.println("[DB 팀 일정] 첫번째 컨텐츠가 입력되었습니다.");
				if(affectedRow > 0) flag = true;
				else flag = false;
				
				psmt.close();
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
				System.out.println("[DB 팀 일정] 첫번째 컨텐츠 입력 중 오류가 발생했습니다.");
			}
		}else if(vo.getSchedule_contents_second() != null || !vo.getSchedule_contents_second().equals("null")){
			
			String sql = "update schedule set schedule_contents_first = ? where m_id = ? and schedule_date = ? and schedule_division = ?";
			
			try {
				PreparedStatement psmt = conn.prepareStatement(sql);
				psmt.setString(1, vo.getSchedule_contents_first());
				psmt.setString(2, vo.getM_id());
				psmt.setInt(3, Integer.parseInt(vo.getSchedule_date()));
				psmt.setString(4, vo.getSchedule_division());
				
				int affectedRow = psmt.executeUpdate();
				
				if(affectedRow > 0) flag = true;
				else flag = false;
				
				psmt.close();
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
				System.out.println("[DB 팀 일정] 첫번째 컨텐츠 입력중 오류가 발생하였습니다");
			}
		}
			
		return flag;
	}
	
	//[팀 일정] 두번째 컨텐츠 입력 메서드 입니다.
	public boolean teamInsertSecond(ScheduleVO vo) {
			
		boolean flag = false;
		
		if(vo.getSchedule_contents_second() == null || vo.getSchedule_contents_second().equals("null")){
			
			String sql = "insert into schedule (m_id, schedule_contents_second, schedule_date, schedule_division) values(?, ?, ?, ?)";
		
			try {
				PreparedStatement psmt = conn.prepareStatement(sql);
				psmt.setString(1, vo.getM_id());
				psmt.setString(2, vo.getSchedule_contents_second());
				psmt.setInt(3, Integer.parseInt(vo.getSchedule_date()));
				psmt.setString(4, vo.getSchedule_division());
				
				int affectedRow = psmt.executeUpdate();
				System.out.println("[DB 팀 일정] 두번째 컨텐츠가 입력되었습니다.");
				if(affectedRow > 0) flag = true;
				else flag = false;
				
				psmt.close();
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
				System.out.println("[DB 팀 일정] 두번째 컨텐츠 입력 중 오류가 발생했습니다.");
			}
		}else if(vo.getSchedule_contents_second() != null || !vo.getSchedule_contents_second().equals("null")){
			
			String sql = "update schedule set schedule_contents_second = ? where m_id = ? and schedule_date = ? and schedule_division = ?";
			
			try {
				PreparedStatement psmt = conn.prepareStatement(sql);
				psmt.setString(1, vo.getSchedule_contents_second());
				psmt.setString(2, vo.getM_id());
				psmt.setInt(3, Integer.parseInt(vo.getSchedule_date()));
				psmt.setString(4, vo.getSchedule_division());
				
				int affectedRow = psmt.executeUpdate();
				
				if(affectedRow > 0) flag = true;
				else flag = false;
				
				psmt.close();
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
				System.out.println("[DB 팀 일정] 첫번째 컨텐츠 입력중 오류가 발생하였습니다");
			}
		}
			
		return flag;
	}
	
	//[팀 일정] 첫번째 컨텐츠 수정 메서드 입니다.
	public boolean teamUpdateFirst(ScheduleVO vo) {
		
		boolean flag = false;

		String sql = "update schedule set schedule_contents_first = ? where m_id = ? and schedule_date = ? and schedule_division = ?";
		
		try {
			PreparedStatement psmt = conn.prepareStatement(sql);
			psmt.setString(1, vo.getSchedule_contents_first());
			psmt.setString(2, vo.getM_id());
			psmt.setInt(3, Integer.parseInt(vo.getSchedule_date()));
			psmt.setString(4, vo.getSchedule_division());
			
			int affectedRow = psmt.executeUpdate();
			System.out.println("[DB 팀 일정] 첫번째 컨텐츠가 수정되었습니다.");
			if(affectedRow > 0) flag = true;
			else flag = false;
			
			psmt.close();
			conn.close();
		} catch (SQLException e) {
			e.printStackTrace();
			System.out.println("[DB 팀 일정] 첫번째 컨텐츠 수정중 오류가 발생하였습니다");
		}
		
		return flag;
	}
	
	//[팀 일정] 두번째 컨텐츠 수정 메서드 입니다.
	public boolean teamUpdateSecond(ScheduleVO vo) {
		
		boolean flag = false;

		String sql = "update schedule set schedule_contents_second = ? where m_id = ? and schedule_date = ? and schedule_division = ?";
		
		try {
			PreparedStatement psmt = conn.prepareStatement(sql);
			psmt.setString(1, vo.getSchedule_contents_second());
			psmt.setString(2, vo.getM_id());
			psmt.setInt(3, Integer.parseInt(vo.getSchedule_date()));
			psmt.setString(4, vo.getSchedule_division());
			
			int affectedRow = psmt.executeUpdate();
			System.out.println("[DB 팀 일정] 첫번째 컨텐츠가 수정되었습니다.");
			if(affectedRow > 0) flag = true;
			else flag = false;
			
			psmt.close();
			conn.close();
		} catch (SQLException e) {
			e.printStackTrace();
			System.out.println("[DB 팀 일정] 두번째 컨텐츠 수정중 오류가 발생하였습니다");
		}
		
		return flag;
	}
	
	//[팀 일정] 첫번째 컨텐츠 삭제 메서드 입니다.
	public boolean teamDeleteFirst(ScheduleVO vo) {
		
		boolean flag = false;
		
		if(!vo.getSchedule_all_delete().equals("allDelete")){
			
			String sql = "update schedule set schedule_contents_first = "+NULL_DATA+" where m_id = ? and schedule_date = ? and schedule_division = ?";
			
			try {
				PreparedStatement psmt = conn.prepareStatement(sql);
				psmt.setString(1, vo.getM_id());
				psmt.setInt(2, Integer.parseInt(vo.getSchedule_date()));
				psmt.setString(3, vo.getSchedule_division());
				
				int affectedRow = psmt.executeUpdate();
				if(affectedRow > 0) flag = true;
				else flag = false;
				
				psmt.close();
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
				System.out.println("[DB 팀 일정] 첫번째 컨텐츠 삭제 중 오류가 발생하였습니다.");
			}
		}else if(vo.getSchedule_all_delete().equals("allDelete")){
			
			String sql = "delete from schedule where m_id = ? and schedule_date = ? and schedule_division = ?";
			
			try {
				PreparedStatement psmt = conn.prepareStatement(sql);
				psmt.setString(1, vo.getM_id());
				psmt.setInt(2, Integer.parseInt(vo.getSchedule_date()));
				psmt.setString(3, vo.getSchedule_division());
				
				int affectedRow = psmt.executeUpdate();
				System.out.println("[DB 팀 일정] 첫번째 컨텐츠 해당 모든 데이터가 삭제되었습니다.");				
				if(affectedRow > 0) flag = true;
				else flag = false;
				
				psmt.close();
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
				System.out.println("[DB 팀 일정] 첫번째 컨텐츠 해당 모든 데이터 삭제 중 오류가 발생하였습니다.");
			}
		}
		return flag;
	}
	
	//[팀 일정] 두번째 컨텐츠 삭제 메서드 입니다.
	public boolean teamDeleteSecond(ScheduleVO vo) {
		
		boolean flag = false;
		
		if(!vo.getSchedule_all_delete().equals("allDelete")){
			
			String sql = " update schedule set schedule_contents_second = "+NULL_DATA+" where m_id = ? and schedule_date = ? and schedule_division = ?";
			
			try {
				PreparedStatement psmt = conn.prepareStatement(sql);
				psmt.setString(1, vo.getM_id());
				psmt.setInt(2, Integer.parseInt(vo.getSchedule_date()));
				psmt.setString(3, vo.getSchedule_division());
				
				int affectedRow = psmt.executeUpdate();
				System.out.println("[DB 팀 일정] 두번째 컨텐츠가 삭제되었습니다.");
				if(affectedRow > 0) flag = true;
				else flag = false;
				
				psmt.close();
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
				System.out.println("[DB 팀 일정] 두번째 컨텐츠 삭제 중 오류가 발생하였습니다.");
			}
		}else if(vo.getSchedule_all_delete().equals("allDelete")){
			
			String sql = "delete from schedule where m_id = ? and schedule_date = ? and schedule_division = ?";
			
			try {
				PreparedStatement psmt = conn.prepareStatement(sql);
				psmt.setString(1, vo.getM_id());
				psmt.setInt(2, Integer.parseInt(vo.getSchedule_date()));
				psmt.setString(3, vo.getSchedule_division());
				
				int affectedRow = psmt.executeUpdate();
				System.out.println("[DB 팀 일정] 두번째 컨텐츠 해당 모든 데이터가 삭제되었습니다.");	
				if(affectedRow > 0) flag = true;
				else flag = false;
				
				psmt.close();
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
				System.out.println("[DB 팀 일정] 두번째 컨텐츠 해당 모든 데이터 삭제 중 오류가 발생하였습니다.");
			}
		}
		return flag;
	}
	
	public void setVo(ScheduleVO vo) {
		this.vo = vo;
	}
	
	//[오늘의 개인 일정] 해당 아이디의 오늘의 개인 일정 페이지 투데이 컨텐츠를 불러오는 메서드 입니다.
	public ArrayList<ScheduleVO> getPrivateScheduleTodayContents(String m_id){
		
		ArrayList<ScheduleVO> list = new ArrayList<ScheduleVO>();
		
		String sql = "select * from schedule where m_id ='"+m_id+"' and schedule_division = 'private' and schedule_time is not null";
		
		try {			
			PreparedStatement psmt = conn.prepareStatement(sql);
			ResultSet rs = psmt.executeQuery();
			
			while(rs.next()){
				
				ScheduleVO vo = new ScheduleVO();
				vo.setM_id(rs.getString("m_id"));
				String calendar = rs.getString("schedule_date");
				String[] calendarArr = calendar.split("-");
				calendar = calendarArr[0]+calendarArr[1]+calendarArr[2];
				vo.setSchedule_date(calendar);
				vo.setSchedule_time(rs.getString("schedule_time"));
				vo.setSchedule_today_contents(rs.getString("schedule_today_contents"));
				vo.setSchedule_division(rs.getString("schedule_division"));
				
				System.out.println("----------------------------------------------------------------");
				System.out.println("투데이 페이지로 보내는 아이디: "+rs.getString("m_id"));
				System.out.println("투데이 페이지로 보내는 일자: "+calendar);
				System.out.println("투데이 페이지로 보내는 시간: "+rs.getString("schedule_time"));
				System.out.println("투데이 페이지로 보내는 컨텐츠: "+rs.getString("schedule_today_contents"));
				System.out.println("투데이 페이지로 보내는 구분: "+rs.getString("schedule_division"));
				System.out.println("----------------------------------------------------------------");
				
				list.add(vo);
			}
			
			rs.close();
			psmt.close();
			conn.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		return list;
	}
	
	//[오늘의 개인 일정] 해당 아이디의 일자별 개인 일정 페이지 투데이 컨텐츠를 불러오는 메서드 입니다.
	public ArrayList<ScheduleVO> getPrivateScheduleTodayContents(String m_id, int year, int month, int date){
				
		String duplicateMonth;
		String duplicateDate;
		
		if(month < 10) duplicateMonth = String.valueOf("0"+month); 
		else duplicateMonth = String.valueOf(month);
		
		if(date < 10) duplicateDate = String.valueOf("0"+date);
		else duplicateDate = String.valueOf(date);
		
		System.out.println("일자별 개인 일정 메서드에 들어오는 아이디: "+m_id);
		System.out.println("일자별 개인 일정 메서드에 들어오는 년: "+year);
		System.out.println("일자별 개인 일정 메서드에 들어오는 월: "+duplicateMonth);
		System.out.println("일자별 개인 일정 메서드에 들어오는 일: "+duplicateDate);
		
		String ymd = String.valueOf(year)+duplicateMonth+duplicateDate;
		
		ArrayList<ScheduleVO> list = new ArrayList<ScheduleVO>();
		
		String sql = "select * from schedule where m_id ='"+m_id+"' and schedule_date = '"+ymd+"' and schedule_division = 'private' and schedule_time is not null";
		
		try {			
			PreparedStatement psmt = conn.prepareStatement(sql);
			ResultSet rs = psmt.executeQuery();
			
			while(rs.next()){
				
				ScheduleVO vo = new ScheduleVO();
				vo.setM_id(rs.getString("m_id"));
				vo.setSchedule_date(ymd);
				vo.setSchedule_time(rs.getString("schedule_time"));
				vo.setSchedule_today_contents(rs.getString("schedule_today_contents"));
				vo.setSchedule_division(rs.getString("schedule_division"));
				
				System.out.println("----------------------------------------------------------------");
				System.out.println("투데이 페이지로 보내는 아이디: "+rs.getString("m_id"));
				System.out.println("투데이 페이지로 보내는 일자: "+ymd);
				System.out.println("투데이 페이지로 보내는 시간: "+rs.getString("schedule_time"));
				System.out.println("투데이 페이지로 보내는 컨텐츠: "+rs.getString("schedule_today_contents"));
				System.out.println("투데이 페이지로 보내는 구분: "+rs.getString("schedule_division"));
				System.out.println("----------------------------------------------------------------");
				
				list.add(vo);
			}
			
			rs.close();
			psmt.close();
			//conn.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		return list;
	}
	
	//[오늘의 개인 일정] 투데이 컨텐츠 입력 메서드 입니다.
	public boolean privateTodayInsert(ScheduleVO vo){
		
		boolean flag = false;
		
			String sql = " insert into schedule (m_id, schedule_date, schedule_time, schedule_today_contents, schedule_division) values (?, ?, ?, ?, ?)";
			
			try {
				PreparedStatement psmt = conn.prepareStatement(sql);
				psmt.setString(1, vo.getM_id());
				psmt.setString(2, vo.getSchedule_date());
				psmt.setString(3, vo.getSchedule_time());
				psmt.setString(4, vo.getSchedule_today_contents());
				psmt.setString(5, vo.getSchedule_division());
				
				int affectedRow = psmt.executeUpdate();
				System.out.println("[DB 오늘의 개인 일정] 투데이 컨텐츠가 입력되었습니다.");
				if(affectedRow > 0) flag = true;
				else flag = false;
				
			} catch (SQLException e) {
				e.printStackTrace();
				System.out.println("[DB 오늘의 개인 일정] 투데이 컨텐츠 입력 중 오류가 발생하였습니다.");
			}
		
		return flag;
	}
	
	//[오늘의 개인 일정] 투데이 컨텐츠 수정 메서드 입니다.
	public boolean privateTodayUpdate(ScheduleVO vo){
		
		boolean flag = false;
		
		String sql = " update schedule set schedule_today_contents = ? where m_id = ? and schedule_date = ? and schedule_time = ? and schedule_division = ?";
		
		try {
			PreparedStatement psmt = conn.prepareStatement(sql);
			psmt.setString(1, vo.getSchedule_today_contents());
			psmt.setString(2, vo.getM_id());
			psmt.setString(3, vo.getSchedule_date());
			psmt.setString(4, vo.getSchedule_time());
			psmt.setString(5, vo.getSchedule_division());
			
			int affectedRow = psmt.executeUpdate();
			System.out.println("[DB 오늘의 개인 일정] 투데이 컨텐츠가 수정되었습니다.");
			if(affectedRow > 0) flag = true;
			else flag = false;
			
		} catch (SQLException e) {
			e.printStackTrace();
			System.out.println("[DB 오늘의 개인 일정] 투데이 컨텐츠 수정 중 오류가 발생하였습니다.");
		}
		
		return flag;
	}
	
	//[오늘의 개인 일정] 투데이 컨텐츠 삭제 메서드 입니다.
	public boolean privateTodayDelete(ScheduleVO vo){
		
		boolean flag = false;
		
		String sql = " delete from schedule where m_id = ? and schedule_date = ? and schedule_time = ? and schedule_division = ?";
		
		try {
			PreparedStatement psmt = conn.prepareStatement(sql);
			psmt.setString(1, vo.getM_id());
			psmt.setString(2, vo.getSchedule_date());
			psmt.setString(3, vo.getSchedule_time());
			psmt.setString(4, vo.getSchedule_division());
			
			int affectedRow = psmt.executeUpdate();
			System.out.println("[DB 오늘의 개인 일정] 투데이 컨텐츠가 삭제되었습니다.");
			if(affectedRow > 0) flag = true;
			else flag = false;
			
		} catch (SQLException e) {
			e.printStackTrace();
			System.out.println("[DB 오늘의 개인 일정] 투데이 컨텐츠 삭제 중 오류가 발생하였습니다.");
		}
		
		return flag;
	}
	
	//[오늘의 팀 일정] 해당 아이디의 일자별 팀 일정 페이지 투데이 컨텐츠를 불러오는 메서드 입니다.
	public ArrayList<ScheduleVO> getTeamScheduleTodayContents(String m_id, int year, int month, int date, int d_code){
				
		String duplicateMonth;
		String duplicateDate;
		
		if(month < 10) duplicateMonth = String.valueOf("0"+month);
		else duplicateMonth = String.valueOf(month);
		
		if(date < 10) duplicateDate = String.valueOf("0"+date);
		else duplicateDate = String.valueOf(date);
		
		System.out.println("일자별 팀 일정 메서드에 들어오는 아이디: "+m_id);
		System.out.println("일자별 팀 일정 메서드에 들어오는 년: "+year);
		System.out.println("일자별 팀 일정 메서드에 들어오는 월: "+duplicateMonth);
		System.out.println("일자별 팀 일정 메서드에 들어오는 일: "+duplicateDate);
		
		String ymd = String.valueOf(year)+duplicateMonth+duplicateDate;
		
		ArrayList<ScheduleVO> list = new ArrayList<ScheduleVO>();
		
		String sql = "select * from schedule where m_id ='"+m_id+"' and schedule_date = '"+ymd+"' and schedule_division = "+d_code+" and schedule_time is not null";
		
		System.out.println("아이디: "+m_id);
		System.out.println("일자: "+ymd);
		System.out.println("구분: "+d_code);
		
		try {			
			PreparedStatement psmt = conn.prepareStatement(sql);
			ResultSet rs = psmt.executeQuery();
			
			while(rs.next()){
				
				ScheduleVO vo = new ScheduleVO();
				vo.setM_id(rs.getString("m_id"));
				vo.setSchedule_date(ymd);
				vo.setSchedule_time(rs.getString("schedule_time"));
				vo.setSchedule_today_contents(rs.getString("schedule_today_contents"));
				vo.setSchedule_division(rs.getString("schedule_division"));
				
				System.out.println("----------------------------------------------------------------");
				System.out.println("투데이 페이지로 보내는 아이디: "+rs.getString("m_id"));
				System.out.println("투데이 페이지로 보내는 일자: "+ymd);
				System.out.println("투데이 페이지로 보내는 시간: "+rs.getString("schedule_time"));
				System.out.println("투데이 페이지로 보내는 컨텐츠: "+rs.getString("schedule_today_contents"));
				System.out.println("투데이 페이지로 보내는 구분: "+rs.getString("schedule_division"));
				System.out.println("----------------------------------------------------------------");
				
				list.add(vo);
			}
			
			rs.close();
			psmt.close();
			conn.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		return list;
	}
	
	//[오늘의 팀 일정] 투데이 컨텐츠 입력 메서드 입니다.
	public boolean teamTodayInsert(ScheduleVO vo){
		
		boolean flag = false;
		
			String sql = " insert into schedule (m_id, schedule_date, schedule_time, schedule_today_contents, schedule_division) values (?, ?, ?, ?, ?)";
			
			try {
				PreparedStatement psmt = conn.prepareStatement(sql);
				psmt.setString(1, vo.getM_id());
				psmt.setString(2, vo.getSchedule_date());
				psmt.setString(3, vo.getSchedule_time());
				psmt.setString(4, vo.getSchedule_today_contents());
				psmt.setString(5, vo.getSchedule_division());
				
				int affectedRow = psmt.executeUpdate();
				System.out.println("[DB 오늘의 개인 일정] 투데이 컨텐츠가 입력되었습니다.");
				if(affectedRow > 0) flag = true;
				else flag = false;
				
			} catch (SQLException e) {
				e.printStackTrace();
				System.out.println("[DB 오늘의 개인 일정] 투데이 컨텐츠 입력 중 오류가 발생하였습니다.");
			}
		
		return flag;
	}
	
	//[오늘의 팀 일정] 투데이 컨텐츠 수정 메서드 입니다.
	public boolean teamTodayUpdate(ScheduleVO vo){
		
		boolean flag = false;
		
		String sql = " update schedule set schedule_today_contents = ? where m_id = ? and schedule_date = ? and schedule_time = ? and schedule_division = ?";
		
		try {
			PreparedStatement psmt = conn.prepareStatement(sql);
			psmt.setString(1, vo.getSchedule_today_contents());
			psmt.setString(2, vo.getM_id());
			psmt.setString(3, vo.getSchedule_date());
			psmt.setString(4, vo.getSchedule_time());
			psmt.setString(5, vo.getSchedule_division());
			
			int affectedRow = psmt.executeUpdate();
			System.out.println("[DB 오늘의 개인 일정] 투데이 컨텐츠가 수정되었습니다.");
			if(affectedRow > 0) flag = true;
			else flag = false;
			
		} catch (SQLException e) {
			e.printStackTrace();
			System.out.println("[DB 오늘의 개인 일정] 투데이 컨텐츠 수정 중 오류가 발생하였습니다.");
		}
		
		return flag;
	}
	
	//[오늘의 개인 일정] 투데이 컨텐츠 삭제 메서드 입니다.
	public boolean teamTodayDelete(ScheduleVO vo){
		
		boolean flag = false;
		
		String sql = " delete from schedule where m_id = ? and schedule_date = ? and schedule_time = ? and schedule_division = ?";
		
		try {
			PreparedStatement psmt = conn.prepareStatement(sql);
			psmt.setString(1, vo.getM_id());
			psmt.setString(2, vo.getSchedule_date());
			psmt.setString(3, vo.getSchedule_time());
			psmt.setString(4, vo.getSchedule_division());
			
			int affectedRow = psmt.executeUpdate();
			System.out.println("[DB 오늘의 개인 일정] 투데이 컨텐츠가 삭제되었습니다.");
			if(affectedRow > 0) flag = true;
			else flag = false;
			
		} catch (SQLException e) {
			e.printStackTrace();
			System.out.println("[DB 오늘의 개인 일정] 투데이 컨텐츠 삭제 중 오류가 발생하였습니다.");
		}
		
		return flag;
	}
}
